/**
 * window.localStorage的封装类
 * 提供了一个简单的API来操作localStorage，包括设置、获取、移除和清空存储的键值对
 * @method set 设置
 * @method get 获取
 * @method remove 移除
 * @method clear 移除全部
 */
export default {
  /**
   * 设置localStorage的键值对
   * @param {string} key - 存储的键名
   * @param {*} val - 存储的值，可以是任何可以被JSON.stringify方法序列化的数据类型
   */
  set(key, val) {
    window.localStorage.setItem(key, JSON.stringify(val))
  },

  /**
   * 获取localStorage中指定键名的值
   * @param {string} key - 要获取的键名
   * @returns {*} - 返回存储的值，如果键不存在则返回null
   */
  get(key) {
    const json = window.localStorage.getItem(key)
    try {
      return JSON.parse(json)
    }
    catch (error) {
      return json
    }
  },

  /**
   * 从localStorage中移除指定键名的值
   * @param {string} key - 要移除的键名
   */
  remove(key) {
    window.localStorage.removeItem(key)
  },

  /**
   * 清空localStorage中的所有数据
   */
  clear() {
    window.localStorage.clear()
  },
}
